button: Handle :inconsistent in GtkToggleButton
authorBenjamin Otte <otte@redhat.com>
Fri, 15 Aug 2014 16:26:35 +0000 (18:26 +0200)
committerBenjamin Otte <otte@redhat.com>
Sat, 16 Aug 2014 14:34:15 +0000 (16:34 +0200)
gtk/gtkcheckbutton.c
gtk/gtkradiobutton.c
gtk/gtktogglebutton.c

index 1221200b8346275b4d8db71168c64007049fca1e..9591e7796d2840f0619d71394fff8c37c8c9e231 100644 (file)
@@ -529,7 +529,6 @@ gtk_real_check_button_draw_indicator (GtkCheckButton *check_button,
 {
   GtkWidget *widget;
   GtkButton *button;
-  GtkToggleButton *toggle_button;
   GtkStateFlags state = 0;
   gint x, y;
   gint indicator_size;
@@ -541,7 +540,6 @@ gtk_real_check_button_draw_indicator (GtkCheckButton *check_button,
 
   widget = GTK_WIDGET (check_button);
   button = GTK_BUTTON (check_button);
-  toggle_button = GTK_TOGGLE_BUTTON (check_button);
 
   gtk_widget_get_allocation (widget, &allocation);
   baseline = gtk_widget_get_allocated_baseline (widget);
@@ -559,13 +557,9 @@ gtk_real_check_button_draw_indicator (GtkCheckButton *check_button,
     y = CLAMP (baseline - indicator_size * button->priv->baseline_align,
               0, allocation.height - indicator_size);
 
-  state &= ~(GTK_STATE_FLAG_INCONSISTENT |
-             GTK_STATE_FLAG_ACTIVE |
+  state &= ~(GTK_STATE_FLAG_ACTIVE |
              GTK_STATE_FLAG_PRELIGHT);
 
-  if (gtk_toggle_button_get_inconsistent (toggle_button))
-    state |= GTK_STATE_FLAG_INCONSISTENT;
-  
   if (button->priv->activate_timeout || (button->priv->button_down && button->priv->in_button))
     state |= GTK_STATE_FLAG_ACTIVE;
 
index e4a01a59c97e74e3bd32a5a391ce9ef666c01d1e..86c7ca3df264e8c7153ad709934eefc0dcef2d4f 100644 (file)
@@ -830,7 +830,6 @@ gtk_radio_button_draw_indicator (GtkCheckButton *check_button,
   GtkAllocation allocation;
   GtkWidget *widget;
   GtkButton *button;
-  GtkToggleButton *toggle_button;
   GtkStyleContext *context;
   GtkStateFlags state = 0;
   gint x, y;
@@ -840,7 +839,6 @@ gtk_radio_button_draw_indicator (GtkCheckButton *check_button,
 
   widget = GTK_WIDGET (check_button);
   button = GTK_BUTTON (check_button);
-  toggle_button = GTK_TOGGLE_BUTTON (check_button);
   context = gtk_widget_get_style_context (widget);
   state = gtk_widget_get_state_flags (widget);
 
@@ -857,13 +855,9 @@ gtk_radio_button_draw_indicator (GtkCheckButton *check_button,
     y = CLAMP (baseline - indicator_size * button->priv->baseline_align,
               0, allocation.height - indicator_size);
 
-  state &= ~(GTK_STATE_FLAG_INCONSISTENT |
-             GTK_STATE_FLAG_ACTIVE |
+  state &= ~(GTK_STATE_FLAG_ACTIVE |
              GTK_STATE_FLAG_PRELIGHT);
 
-  if (gtk_toggle_button_get_inconsistent (toggle_button))
-    state |= GTK_STATE_FLAG_INCONSISTENT;
-  
   if (button->priv->activate_timeout ||
       (button->priv->button_down && button->priv->in_button))
     state |= GTK_STATE_FLAG_ACTIVE;
index ba97368bdd1a0b303e08a5313439d148ac556be0..b12fbf29e7255fc32c8ffea3b59dd0bc27025d26 100644 (file)
@@ -559,8 +559,10 @@ gtk_toggle_button_set_inconsistent (GtkToggleButton *toggle_button,
     {
       priv->inconsistent = setting;
 
-      gtk_toggle_button_update_state (GTK_BUTTON (toggle_button));
-      gtk_widget_queue_draw (GTK_WIDGET (toggle_button));
+      if (setting)
+        gtk_widget_set_state_flags (GTK_WIDGET (toggle_button), GTK_STATE_FLAG_INCONSISTENT, FALSE);
+      else
+        gtk_widget_unset_state_flags (GTK_WIDGET (toggle_button), GTK_STATE_FLAG_INCONSISTENT);
 
       g_object_notify (G_OBJECT (toggle_button), "inconsistent");      
     }
@@ -653,17 +655,12 @@ static void
 gtk_toggle_button_update_state (GtkButton *button)
 {
   GtkToggleButton *toggle_button = GTK_TOGGLE_BUTTON (button);
-  GtkToggleButtonPrivate *priv = toggle_button->priv;
   GtkStateFlags new_state = 0;
 
   new_state = gtk_widget_get_state_flags (GTK_WIDGET (button)) &
-    ~(GTK_STATE_FLAG_INCONSISTENT |
-      GTK_STATE_FLAG_PRELIGHT |
+    ~(GTK_STATE_FLAG_PRELIGHT |
       GTK_STATE_FLAG_ACTIVE);
 
-  if (priv->inconsistent)
-    new_state |= GTK_STATE_FLAG_INCONSISTENT;
-  
   if (button->priv->in_button && button->priv->button_down)
     new_state |= GTK_STATE_FLAG_ACTIVE;